1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4
5 public class DragonScript : MonoBehaviour {
6
7 public GameObject bullet;
8 public GameObject body;
9 public GameObject leftWing;
10 public GameObject rightWing;
11 private bool rotateUp = true;
12 private Vector3 leftWingPosition;
13
14 // Use this for initialization
15 void Start () {
16 leftWingPosition = leftWing.transform.localPosition;
17 InvokeRepeating ("Shoot", 0.01f, 0.2f);
18 // InvokeRepeating ("FlapWings", 0.01f, 0.2f);
19 // StartCoroutine(FlapWings());
20 InvokeRepeating ("FlapWings2", 0.01f, 0.05f);
21 }
22
23 // Update is called once per frame
24 void Update () {
25 }
26
27 void Shoot () {
28 // Instantiate (bullet, this.transform.position, Quaternion.identity);
29 // bullet.gameObject.GetComponent<Rigidbody2D> ().velocity = new Vector3 (0, 2f, 0);
30 GameObject b = ObjectPooler.SharedInstance.GetPooledObject(bullet.tag);
31 if (b != null) {
32 b.transform.position = this.transform.position;
33 b.SetActive(true);
34 }
35 }
36
37 void activateFlapWings3 () {
38 StartCoroutine (FlapWings3());
39 }
40
41 IEnumerator FlapWings3 () {
42 for (float i = 0.0f; i < -45f; i-=5f) {
43 Debug.Log ("rotating " + i);
44 transform.Rotate (Vector3.forward * -i);
45 yield return new WaitForSeconds (0.5f);
46 }
47 }
48
49 void FlapWings2 () {
50 float eulerAngleY = leftWing.transform.localEulerAngles.y;
51 Debug.Log ("eulerAngleY: " + eulerAngleY);
52 Debug.Log ("rotateUp: " + rotateUp);
53 Debug.Log ("leftWing.transform.localPosition: " + leftWing.transform.localPosition);
54 Debug.Log ("leftWingPosition: " + leftWingPosition);
55 if (rotateUp) {
56 if ((eulerAngleY >= 305f) && (eulerAngleY <= 310f)) { // maximum vertical rotation
57 Debug.Log("1 up");
58 rotateUp = false;
59 // leftWing.transform.Rotate (Vector3.down * 5f);
60 // rightWing.transform.Rotate (Vector3.up * 5f);
61 leftWing.transform.RotateAround(body.transform.position, Vector3.up, 5f);
62 rightWing.transform.RotateAround(body.transform.position, Vector3.down, 5f);
63 } else {
64 Debug.Log("2 down");
65 // leftWing.transform.Rotate (Vector3.up * 5f);
66 // rightWing.transform.Rotate (Vector3.down * 5f);
67 leftWing.transform.RotateAround(body.transform.position, Vector3.down, 5f);
68 rightWing.transform.RotateAround(body.transform.position, Vector3.up, 5f);
69 }
70 } else {
71 if ((eulerAngleY >= 0f) && (eulerAngleY <= 10f)) { // minimum vertical rotation
72 Debug.Log("3 down");
73 rotateUp = true;
74 // leftWing.transform.Rotate (Vector3.up * 5f);
75 // rightWing.transform.Rotate (Vector3.down * 5f);
76 leftWing.transform.RotateAround(body.transform.position, Vector3.down, 5f);
77 rightWing.transform.RotateAround(body.transform.position, Vector3.up, 5f);
78 } else {
79 Debug.Log("4 up");
80 // leftWing.transform.Rotate (Vector3.down * 5f);
81 // rightWing.transform.Rotate (Vector3.up * 5f);
82 leftWing.transform.RotateAround(body.transform.position, Vector3.up, 5f);
83 rightWing.transform.RotateAround(body.transform.position, Vector3.down, 5f);
84 }
85 }
86 }
87
88 IEnumerator FlapWings () {
89 Debug.Log ("FlapWings");
90 yield return new WaitForSeconds (0.5f);
91 /*
92 while (true) {
93 Debug.Log ("rotate up");
94 // leftWing.transform.Rotate (new Vector3 (0, 1, 0), Space.Self);
95 leftWing.transform.RotateAround (leftWing.transform.position, Vector3.up, 45f);
96 leftWing.transform.Rotate (new Vector3 (0, 1, 0), Space.World);
97 yield return new WaitForSeconds (0.5f);
98 Debug.Log ("rotate normal");
99 // leftWing.transform.Rotate (new Vector3 (0, -1, 0), Space.Self);
100 leftWing.transform.Rotate (new Vector3 (0, -1, 0), Space.World);
101 yield return new WaitForSeconds (0.5f);
102 Debug.Log ("rotate down");
103 // leftWing.transform.Rotate (new Vector3 (0, -1, 0), Space.Self);
104 leftWing.transform.Rotate (new Vector3 (0, -1, 0), Space.World);
105 yield return new WaitForSeconds (0.5f);
106 Debug.Log ("rotate normal");
107 // leftWing.transform.Rotate (new Vector3 (0, 1, 0), Space.Self);
108 leftWing.transform.Rotate (new Vector3 (0, 1, 0), Space.World);
109 yield return new WaitForSeconds (0.5f);
110 }
111 */
112 }
113 }